header.png

Data Preprocessing


In [1]:
## Just disables the warning, doesn't take advantage of AVX/FMA to run faster
#import os
#os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
In [2]:
import tensorflow
In [3]:
import cv2,os
data_path='train/'
categories=os.listdir(data_path)
labels=[i for i in range(len(categories))]

label_dict=dict(zip(categories,labels)) #empty dictionary
print(label_dict)
print(categories)
print(labels)
{'dogs': 0, 'cats': 1}
['dogs', 'cats']
[0, 1]
In [4]:
img_size=100
data=[]
target=[]

for category in categories:
    folder_path=os.path.join(data_path,category)
    img_names=os.listdir(folder_path)
        
    for img_name in img_names:
        img_path=os.path.join(folder_path,img_name)
        img=cv2.imread(img_path)

        try:  
            resized=cv2.resize(img,(img_size,img_size))
            #resizing the image  into 100x100, since we need a fixed common size for all the images in the dataset
            data.append(resized)
            target.append(label_dict[category])
            #appending the image and the label(categorized) into the list (dataset)
        except Exception as e:
            print('Exception:',e)
            #if any exception rasied, the exception will be printed here. And pass to the next image

Recale and assign catagorical lables


In [5]:
import numpy as np
data=np.array(data)/255.0
data=np.reshape(data,(data.shape[0],img_size,img_size,3))
target=np.array(target)
from keras.utils import np_utils
new_target=np_utils.to_categorical(target)
In [6]:
new_target.shape
Out[6]:
(2000, 2)

CNN Model


In [7]:
data.shape
Out[7]:
(2000, 100, 100, 3)
In [8]:
data.shape[1:]
Out[8]:
(100, 100, 3)
In [9]:
from keras.models import Sequential
from keras.layers import Dense,Activation,Flatten,Dropout
from keras.layers import Conv2D,MaxPooling2D
from keras.callbacks import ModelCheckpoint

model=Sequential()

model.add(Conv2D(200,(3,3),input_shape=data.shape[1:]))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
#The first CNN layer followed by Relu and MaxPooling layers

model.add(Conv2D(100,(3,3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
#The second convolution layer followed by Relu and MaxPooling layers

model.add(Flatten())
model.add(Dropout(0.5))
#Flatten layer to stack the output convolutions from second convolution layer
model.add(Dense(50,activation='relu'))
#Dense layer of 64 neurons
model.add(Dense(2,activation='softmax'))
#The Final layer with two outputs for two categories

model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
In [10]:
model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d (Conv2D)              (None, 98, 98, 200)       5600      
_________________________________________________________________
activation (Activation)      (None, 98, 98, 200)       0         
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 49, 49, 200)       0         
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 47, 47, 100)       180100    
_________________________________________________________________
activation_1 (Activation)    (None, 47, 47, 100)       0         
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 23, 23, 100)       0         
_________________________________________________________________
flatten (Flatten)            (None, 52900)             0         
_________________________________________________________________
dropout (Dropout)            (None, 52900)             0         
_________________________________________________________________
dense (Dense)                (None, 50)                2645050   
_________________________________________________________________
dense_1 (Dense)              (None, 2)                 102       
=================================================================
Total params: 2,830,852
Trainable params: 2,830,852
Non-trainable params: 0
_________________________________________________________________

Splittiong data into traning and testing


In [11]:
from sklearn.model_selection import train_test_split
train_data,test_data,train_target,test_target=train_test_split(data,new_target,test_size=0.1)
In [12]:
train_data.shape
Out[12]:
(1800, 100, 100, 3)
In [13]:
train_target.shape
Out[13]:
(1800, 2)
In [14]:
#checkpoint = ModelCheckpoint('model-{epoch:03d}.model',monitor='val_loss',verbose=0,save_best_only=True,mode='auto')
history=model.fit(train_data,train_target,epochs=200,validation_split=0.2)
Epoch 1/200
45/45 [==============================] - 55s 1s/step - loss: 0.8754 - accuracy: 0.5221 - val_loss: 0.6969 - val_accuracy: 0.4861
Epoch 2/200
45/45 [==============================] - 54s 1s/step - loss: 0.6931 - accuracy: 0.4862 - val_loss: 0.6926 - val_accuracy: 0.4861
Epoch 3/200
45/45 [==============================] - 55s 1s/step - loss: 0.6927 - accuracy: 0.5041 - val_loss: 0.6908 - val_accuracy: 0.4889
Epoch 4/200
45/45 [==============================] - 53s 1s/step - loss: 0.6865 - accuracy: 0.5184 - val_loss: 0.6828 - val_accuracy: 0.5278
Epoch 5/200
45/45 [==============================] - 52s 1s/step - loss: 0.6781 - accuracy: 0.5921 - val_loss: 0.6912 - val_accuracy: 0.5250
Epoch 6/200
45/45 [==============================] - 52s 1s/step - loss: 0.6779 - accuracy: 0.5543 - val_loss: 0.7068 - val_accuracy: 0.5778
Epoch 7/200
45/45 [==============================] - 53s 1s/step - loss: 0.6367 - accuracy: 0.6461 - val_loss: 0.6881 - val_accuracy: 0.5778
Epoch 8/200
45/45 [==============================] - 53s 1s/step - loss: 0.5965 - accuracy: 0.7057 - val_loss: 0.6594 - val_accuracy: 0.6472
Epoch 9/200
45/45 [==============================] - 53s 1s/step - loss: 0.5230 - accuracy: 0.7372 - val_loss: 0.6873 - val_accuracy: 0.6361
Epoch 10/200
45/45 [==============================] - 53s 1s/step - loss: 0.4701 - accuracy: 0.7725 - val_loss: 0.6329 - val_accuracy: 0.6806
Epoch 11/200
45/45 [==============================] - 53s 1s/step - loss: 0.4282 - accuracy: 0.7993 - val_loss: 0.7312 - val_accuracy: 0.5972
Epoch 12/200
45/45 [==============================] - 53s 1s/step - loss: 0.3956 - accuracy: 0.8170 - val_loss: 0.7303 - val_accuracy: 0.6278
Epoch 13/200
45/45 [==============================] - 53s 1s/step - loss: 0.3247 - accuracy: 0.8768 - val_loss: 0.8592 - val_accuracy: 0.6278
Epoch 14/200
45/45 [==============================] - 53s 1s/step - loss: 0.2441 - accuracy: 0.8939 - val_loss: 0.8437 - val_accuracy: 0.6111
Epoch 15/200
45/45 [==============================] - 53s 1s/step - loss: 0.2015 - accuracy: 0.9236 - val_loss: 1.0246 - val_accuracy: 0.6222
Epoch 16/200
45/45 [==============================] - 53s 1s/step - loss: 0.1512 - accuracy: 0.9379 - val_loss: 1.0066 - val_accuracy: 0.6028
Epoch 17/200
45/45 [==============================] - 53s 1s/step - loss: 0.1208 - accuracy: 0.9477 - val_loss: 1.0383 - val_accuracy: 0.6333
Epoch 18/200
45/45 [==============================] - 54s 1s/step - loss: 0.1148 - accuracy: 0.9593 - val_loss: 1.2041 - val_accuracy: 0.6111
Epoch 19/200
45/45 [==============================] - 54s 1s/step - loss: 0.0887 - accuracy: 0.9679 - val_loss: 1.1954 - val_accuracy: 0.5806
Epoch 20/200
45/45 [==============================] - 54s 1s/step - loss: 0.0636 - accuracy: 0.9826 - val_loss: 1.4092 - val_accuracy: 0.6278
Epoch 21/200
45/45 [==============================] - 53s 1s/step - loss: 0.0717 - accuracy: 0.9744 - val_loss: 1.3299 - val_accuracy: 0.6361
Epoch 22/200
45/45 [==============================] - 54s 1s/step - loss: 0.0479 - accuracy: 0.9855 - val_loss: 1.2364 - val_accuracy: 0.6194
Epoch 23/200
45/45 [==============================] - 54s 1s/step - loss: 0.0464 - accuracy: 0.9844 - val_loss: 1.5671 - val_accuracy: 0.5583
Epoch 24/200
45/45 [==============================] - 53s 1s/step - loss: 0.0376 - accuracy: 0.9889 - val_loss: 1.4418 - val_accuracy: 0.6083
Epoch 25/200
45/45 [==============================] - 54s 1s/step - loss: 0.0386 - accuracy: 0.9898 - val_loss: 1.4389 - val_accuracy: 0.5917
Epoch 26/200
45/45 [==============================] - 53s 1s/step - loss: 0.0201 - accuracy: 0.9946 - val_loss: 1.5667 - val_accuracy: 0.6083
Epoch 27/200
45/45 [==============================] - 54s 1s/step - loss: 0.0284 - accuracy: 0.9925 - val_loss: 1.6094 - val_accuracy: 0.6028
Epoch 28/200
45/45 [==============================] - 54s 1s/step - loss: 0.0256 - accuracy: 0.9940 - val_loss: 1.6907 - val_accuracy: 0.6028
Epoch 29/200
45/45 [==============================] - 54s 1s/step - loss: 0.0182 - accuracy: 0.9953 - val_loss: 1.3775 - val_accuracy: 0.6111
Epoch 30/200
45/45 [==============================] - 54s 1s/step - loss: 0.0272 - accuracy: 0.9891 - val_loss: 1.6519 - val_accuracy: 0.5944
Epoch 31/200
45/45 [==============================] - 54s 1s/step - loss: 0.0172 - accuracy: 0.9946 - val_loss: 1.8115 - val_accuracy: 0.5861
Epoch 32/200
45/45 [==============================] - 54s 1s/step - loss: 0.0120 - accuracy: 0.9937 - val_loss: 1.8556 - val_accuracy: 0.5861
Epoch 33/200
45/45 [==============================] - 54s 1s/step - loss: 0.0206 - accuracy: 0.9939 - val_loss: 1.7946 - val_accuracy: 0.6028
Epoch 34/200
45/45 [==============================] - 57s 1s/step - loss: 0.0440 - accuracy: 0.9889 - val_loss: 1.7751 - val_accuracy: 0.5889
Epoch 35/200
45/45 [==============================] - 58s 1s/step - loss: 0.0213 - accuracy: 0.9887 - val_loss: 1.7299 - val_accuracy: 0.5972
Epoch 36/200
45/45 [==============================] - 56s 1s/step - loss: 0.0175 - accuracy: 0.9933 - val_loss: 1.8009 - val_accuracy: 0.6083
Epoch 37/200
45/45 [==============================] - 56s 1s/step - loss: 0.0088 - accuracy: 0.9985 - val_loss: 1.7025 - val_accuracy: 0.6306
Epoch 38/200
45/45 [==============================] - 56s 1s/step - loss: 0.0101 - accuracy: 0.9982 - val_loss: 1.7429 - val_accuracy: 0.6111
Epoch 39/200
45/45 [==============================] - 56s 1s/step - loss: 0.0075 - accuracy: 0.9991 - val_loss: 1.9576 - val_accuracy: 0.6000
Epoch 40/200
45/45 [==============================] - 56s 1s/step - loss: 0.0150 - accuracy: 0.9945 - val_loss: 1.8326 - val_accuracy: 0.5944
Epoch 41/200
45/45 [==============================] - 56s 1s/step - loss: 0.0255 - accuracy: 0.9967 - val_loss: 1.8966 - val_accuracy: 0.5972
Epoch 42/200
45/45 [==============================] - 56s 1s/step - loss: 0.0094 - accuracy: 0.9954 - val_loss: 1.8704 - val_accuracy: 0.6056
Epoch 43/200
45/45 [==============================] - 55s 1s/step - loss: 0.0174 - accuracy: 0.9892 - val_loss: 1.8481 - val_accuracy: 0.6056
Epoch 44/200
45/45 [==============================] - 55s 1s/step - loss: 0.0121 - accuracy: 0.9939 - val_loss: 1.8628 - val_accuracy: 0.6111
Epoch 45/200
45/45 [==============================] - 55s 1s/step - loss: 0.0161 - accuracy: 0.9953 - val_loss: 1.8066 - val_accuracy: 0.6194
Epoch 46/200
45/45 [==============================] - 55s 1s/step - loss: 0.0162 - accuracy: 0.9950 - val_loss: 1.9914 - val_accuracy: 0.5972
Epoch 47/200
45/45 [==============================] - 55s 1s/step - loss: 0.0189 - accuracy: 0.9969 - val_loss: 2.1813 - val_accuracy: 0.6111
Epoch 48/200
45/45 [==============================] - 55s 1s/step - loss: 0.0204 - accuracy: 0.9908 - val_loss: 1.9250 - val_accuracy: 0.6028
Epoch 49/200
45/45 [==============================] - 55s 1s/step - loss: 0.0073 - accuracy: 0.9977 - val_loss: 2.0075 - val_accuracy: 0.6167
Epoch 50/200
45/45 [==============================] - 55s 1s/step - loss: 0.0095 - accuracy: 0.9977 - val_loss: 1.9200 - val_accuracy: 0.6167
Epoch 51/200
45/45 [==============================] - 55s 1s/step - loss: 0.0212 - accuracy: 0.9943 - val_loss: 2.1005 - val_accuracy: 0.6194
Epoch 52/200
45/45 [==============================] - 55s 1s/step - loss: 0.0279 - accuracy: 0.9926 - val_loss: 2.0845 - val_accuracy: 0.6167
Epoch 53/200
45/45 [==============================] - 56s 1s/step - loss: 0.0074 - accuracy: 0.9995 - val_loss: 2.0097 - val_accuracy: 0.6444
Epoch 54/200
45/45 [==============================] - 56s 1s/step - loss: 0.0071 - accuracy: 0.9981 - val_loss: 1.9616 - val_accuracy: 0.6306
Epoch 55/200
45/45 [==============================] - 58s 1s/step - loss: 0.0494 - accuracy: 0.9878 - val_loss: 2.0775 - val_accuracy: 0.5917
Epoch 56/200
45/45 [==============================] - 55s 1s/step - loss: 0.0257 - accuracy: 0.9897 - val_loss: 2.0259 - val_accuracy: 0.6111
Epoch 57/200
45/45 [==============================] - 54s 1s/step - loss: 0.0116 - accuracy: 0.9949 - val_loss: 1.8909 - val_accuracy: 0.6028
Epoch 58/200
45/45 [==============================] - 54s 1s/step - loss: 0.0103 - accuracy: 0.9948 - val_loss: 1.8963 - val_accuracy: 0.6000
Epoch 59/200
45/45 [==============================] - 56s 1s/step - loss: 0.0055 - accuracy: 0.9972 - val_loss: 2.0883 - val_accuracy: 0.6167
Epoch 60/200
45/45 [==============================] - 56s 1s/step - loss: 0.0055 - accuracy: 0.9984 - val_loss: 2.1280 - val_accuracy: 0.5861
Epoch 61/200
45/45 [==============================] - 54s 1s/step - loss: 0.0026 - accuracy: 1.0000 - val_loss: 2.1170 - val_accuracy: 0.6083
Epoch 62/200
45/45 [==============================] - 56s 1s/step - loss: 0.0086 - accuracy: 0.9969 - val_loss: 2.0581 - val_accuracy: 0.6111
Epoch 63/200
45/45 [==============================] - 57s 1s/step - loss: 0.0031 - accuracy: 0.9996 - val_loss: 2.1504 - val_accuracy: 0.6111
Epoch 64/200
45/45 [==============================] - 57s 1s/step - loss: 0.0096 - accuracy: 0.9974 - val_loss: 2.1559 - val_accuracy: 0.6167
Epoch 65/200
45/45 [==============================] - 57s 1s/step - loss: 0.0049 - accuracy: 0.9992 - val_loss: 2.1331 - val_accuracy: 0.6000
Epoch 66/200
45/45 [==============================] - 54s 1s/step - loss: 0.0088 - accuracy: 0.9964 - val_loss: 2.2738 - val_accuracy: 0.5917
Epoch 67/200
45/45 [==============================] - 54s 1s/step - loss: 0.0049 - accuracy: 0.9980 - val_loss: 2.2862 - val_accuracy: 0.6083
Epoch 68/200
45/45 [==============================] - 54s 1s/step - loss: 0.0031 - accuracy: 1.0000 - val_loss: 2.3233 - val_accuracy: 0.6139
Epoch 69/200
45/45 [==============================] - 55s 1s/step - loss: 0.0028 - accuracy: 0.9998 - val_loss: 2.5939 - val_accuracy: 0.5917
Epoch 70/200
45/45 [==============================] - 54s 1s/step - loss: 0.0170 - accuracy: 0.9956 - val_loss: 2.3347 - val_accuracy: 0.6083
Epoch 71/200
45/45 [==============================] - 54s 1s/step - loss: 0.0103 - accuracy: 0.9962 - val_loss: 2.2853 - val_accuracy: 0.6056
Epoch 72/200
45/45 [==============================] - 54s 1s/step - loss: 0.0039 - accuracy: 0.9997 - val_loss: 2.4035 - val_accuracy: 0.6139
Epoch 73/200
45/45 [==============================] - 54s 1s/step - loss: 0.0053 - accuracy: 0.9976 - val_loss: 2.4395 - val_accuracy: 0.6139
Epoch 74/200
45/45 [==============================] - 54s 1s/step - loss: 0.0137 - accuracy: 0.9963 - val_loss: 2.4840 - val_accuracy: 0.6056
Epoch 75/200
45/45 [==============================] - 54s 1s/step - loss: 0.0032 - accuracy: 0.9987 - val_loss: 2.4925 - val_accuracy: 0.6083
Epoch 76/200
45/45 [==============================] - 54s 1s/step - loss: 0.0027 - accuracy: 0.9998 - val_loss: 2.3386 - val_accuracy: 0.6306
Epoch 77/200
45/45 [==============================] - 54s 1s/step - loss: 0.0022 - accuracy: 1.0000 - val_loss: 2.3320 - val_accuracy: 0.6139
Epoch 78/200
45/45 [==============================] - 54s 1s/step - loss: 0.0014 - accuracy: 0.9995 - val_loss: 2.6477 - val_accuracy: 0.5972
Epoch 79/200
45/45 [==============================] - 54s 1s/step - loss: 0.0078 - accuracy: 0.9972 - val_loss: 2.2336 - val_accuracy: 0.5944
Epoch 80/200
45/45 [==============================] - 55s 1s/step - loss: 0.0024 - accuracy: 0.9986 - val_loss: 2.4883 - val_accuracy: 0.6083
Epoch 81/200
45/45 [==============================] - 54s 1s/step - loss: 0.0032 - accuracy: 0.9985 - val_loss: 2.3853 - val_accuracy: 0.6028
Epoch 82/200
45/45 [==============================] - 54s 1s/step - loss: 0.0164 - accuracy: 0.9962 - val_loss: 2.3634 - val_accuracy: 0.6167
Epoch 83/200
45/45 [==============================] - 54s 1s/step - loss: 0.0091 - accuracy: 0.9964 - val_loss: 2.3183 - val_accuracy: 0.5917
Epoch 84/200
45/45 [==============================] - 54s 1s/step - loss: 0.0078 - accuracy: 0.9966 - val_loss: 2.3736 - val_accuracy: 0.6250
Epoch 85/200
45/45 [==============================] - 59s 1s/step - loss: 0.0023 - accuracy: 0.9990 - val_loss: 2.3586 - val_accuracy: 0.6167
Epoch 86/200
45/45 [==============================] - 54s 1s/step - loss: 0.0024 - accuracy: 1.0000 - val_loss: 2.5238 - val_accuracy: 0.6000
Epoch 87/200
45/45 [==============================] - 55s 1s/step - loss: 0.0016 - accuracy: 0.9992 - val_loss: 2.6375 - val_accuracy: 0.6194
Epoch 88/200
45/45 [==============================] - 54s 1s/step - loss: 0.0029 - accuracy: 0.9996 - val_loss: 2.5322 - val_accuracy: 0.6028
Epoch 89/200
45/45 [==============================] - 55s 1s/step - loss: 0.0046 - accuracy: 0.9988 - val_loss: 2.5617 - val_accuracy: 0.5861
Epoch 90/200
45/45 [==============================] - 55s 1s/step - loss: 0.0041 - accuracy: 0.9985 - val_loss: 2.9155 - val_accuracy: 0.5972
Epoch 91/200
45/45 [==============================] - 57s 1s/step - loss: 0.0030 - accuracy: 0.9982 - val_loss: 2.9251 - val_accuracy: 0.6028
Epoch 92/200
45/45 [==============================] - 55s 1s/step - loss: 0.0154 - accuracy: 0.9958 - val_loss: 2.4495 - val_accuracy: 0.6222
Epoch 93/200
45/45 [==============================] - 54s 1s/step - loss: 0.0199 - accuracy: 0.9920 - val_loss: 2.3969 - val_accuracy: 0.5694
Epoch 94/200
45/45 [==============================] - 55s 1s/step - loss: 0.0070 - accuracy: 0.9979 - val_loss: 2.3270 - val_accuracy: 0.6139
Epoch 95/200
45/45 [==============================] - 55s 1s/step - loss: 0.0015 - accuracy: 1.0000 - val_loss: 2.2891 - val_accuracy: 0.6167
Epoch 96/200
45/45 [==============================] - 57s 1s/step - loss: 0.0023 - accuracy: 1.0000 - val_loss: 2.3503 - val_accuracy: 0.6167
Epoch 97/200
45/45 [==============================] - 55s 1s/step - loss: 0.0061 - accuracy: 0.9979 - val_loss: 2.5598 - val_accuracy: 0.6028
Epoch 98/200
45/45 [==============================] - 56s 1s/step - loss: 0.0094 - accuracy: 0.9970 - val_loss: 2.4017 - val_accuracy: 0.6111
Epoch 99/200
45/45 [==============================] - 55s 1s/step - loss: 0.0048 - accuracy: 0.9984 - val_loss: 2.6535 - val_accuracy: 0.6361
Epoch 100/200
45/45 [==============================] - 56s 1s/step - loss: 0.0070 - accuracy: 0.9986 - val_loss: 2.7613 - val_accuracy: 0.6083
Epoch 101/200
45/45 [==============================] - 55s 1s/step - loss: 0.0056 - accuracy: 0.9984 - val_loss: 2.5920 - val_accuracy: 0.6194
Epoch 102/200
45/45 [==============================] - 54s 1s/step - loss: 0.0083 - accuracy: 0.9986 - val_loss: 2.3710 - val_accuracy: 0.6028
Epoch 103/200
45/45 [==============================] - 54s 1s/step - loss: 0.0167 - accuracy: 0.9962 - val_loss: 2.5394 - val_accuracy: 0.6056
Epoch 104/200
45/45 [==============================] - 54s 1s/step - loss: 0.0098 - accuracy: 0.9960 - val_loss: 2.2736 - val_accuracy: 0.6083
Epoch 105/200
45/45 [==============================] - 55s 1s/step - loss: 0.0021 - accuracy: 0.9989 - val_loss: 2.3442 - val_accuracy: 0.6306
Epoch 106/200
45/45 [==============================] - 54s 1s/step - loss: 0.0075 - accuracy: 0.9965 - val_loss: 2.3981 - val_accuracy: 0.6333
Epoch 107/200
45/45 [==============================] - 54s 1s/step - loss: 0.0069 - accuracy: 0.9980 - val_loss: 2.4914 - val_accuracy: 0.6361
Epoch 108/200
45/45 [==============================] - 54s 1s/step - loss: 0.0078 - accuracy: 0.9980 - val_loss: 2.5556 - val_accuracy: 0.6111
Epoch 109/200
45/45 [==============================] - 54s 1s/step - loss: 0.0092 - accuracy: 0.9945 - val_loss: 2.6343 - val_accuracy: 0.5944
Epoch 110/200
45/45 [==============================] - 54s 1s/step - loss: 0.0107 - accuracy: 0.9971 - val_loss: 2.3850 - val_accuracy: 0.5833
Epoch 111/200
45/45 [==============================] - 57s 1s/step - loss: 0.0073 - accuracy: 0.9975 - val_loss: 2.5081 - val_accuracy: 0.6139
Epoch 112/200
45/45 [==============================] - 53s 1s/step - loss: 0.0057 - accuracy: 0.9992 - val_loss: 2.3720 - val_accuracy: 0.6278
Epoch 113/200
45/45 [==============================] - 53s 1s/step - loss: 0.0024 - accuracy: 1.0000 - val_loss: 2.4070 - val_accuracy: 0.6333
Epoch 114/200
45/45 [==============================] - 51s 1s/step - loss: 7.6627e-04 - accuracy: 0.9999 - val_loss: 2.4642 - val_accuracy: 0.6139
Epoch 115/200
45/45 [==============================] - 51s 1s/step - loss: 0.0014 - accuracy: 1.0000 - val_loss: 2.4621 - val_accuracy: 0.6250
Epoch 116/200
45/45 [==============================] - 51s 1s/step - loss: 0.0160 - accuracy: 0.9974 - val_loss: 2.2871 - val_accuracy: 0.6167
Epoch 117/200
45/45 [==============================] - 53s 1s/step - loss: 0.0022 - accuracy: 0.9995 - val_loss: 2.3609 - val_accuracy: 0.6250
Epoch 118/200
45/45 [==============================] - 52s 1s/step - loss: 0.0131 - accuracy: 0.9963 - val_loss: 3.0309 - val_accuracy: 0.5917
Epoch 119/200
45/45 [==============================] - 51s 1s/step - loss: 0.0308 - accuracy: 0.9905 - val_loss: 2.8010 - val_accuracy: 0.5889
Epoch 120/200
45/45 [==============================] - 51s 1s/step - loss: 0.0102 - accuracy: 0.9965 - val_loss: 2.5417 - val_accuracy: 0.6083
Epoch 121/200
45/45 [==============================] - 52s 1s/step - loss: 0.0011 - accuracy: 0.9998 - val_loss: 2.7427 - val_accuracy: 0.6194
Epoch 122/200
45/45 [==============================] - 51s 1s/step - loss: 0.0012 - accuracy: 1.0000 - val_loss: 2.7662 - val_accuracy: 0.6167
Epoch 123/200
45/45 [==============================] - 51s 1s/step - loss: 0.0132 - accuracy: 0.9976 - val_loss: 2.3602 - val_accuracy: 0.5917
Epoch 124/200
45/45 [==============================] - 51s 1s/step - loss: 0.0094 - accuracy: 0.9967 - val_loss: 2.3944 - val_accuracy: 0.6139
Epoch 125/200
45/45 [==============================] - 52s 1s/step - loss: 0.0035 - accuracy: 0.9987 - val_loss: 2.4812 - val_accuracy: 0.6222
Epoch 126/200
45/45 [==============================] - 52s 1s/step - loss: 0.0017 - accuracy: 1.0000 - val_loss: 2.5622 - val_accuracy: 0.5972
Epoch 127/200
45/45 [==============================] - 51s 1s/step - loss: 5.0882e-04 - accuracy: 1.0000 - val_loss: 2.5498 - val_accuracy: 0.6028
Epoch 128/200
45/45 [==============================] - 51s 1s/step - loss: 0.0025 - accuracy: 0.9987 - val_loss: 2.7722 - val_accuracy: 0.6056
Epoch 129/200
45/45 [==============================] - 52s 1s/step - loss: 0.0022 - accuracy: 0.9987 - val_loss: 2.5977 - val_accuracy: 0.6139
Epoch 130/200
45/45 [==============================] - 52s 1s/step - loss: 0.0019 - accuracy: 0.9987 - val_loss: 2.6865 - val_accuracy: 0.6056
Epoch 131/200
45/45 [==============================] - 52s 1s/step - loss: 0.0010 - accuracy: 0.9998 - val_loss: 2.6342 - val_accuracy: 0.6111
Epoch 132/200
45/45 [==============================] - 52s 1s/step - loss: 6.9152e-04 - accuracy: 1.0000 - val_loss: 2.5544 - val_accuracy: 0.6111
Epoch 133/200
45/45 [==============================] - 51s 1s/step - loss: 0.0014 - accuracy: 0.9993 - val_loss: 2.5441 - val_accuracy: 0.6111
Epoch 134/200
45/45 [==============================] - 52s 1s/step - loss: 0.0021 - accuracy: 0.9998 - val_loss: 2.7028 - val_accuracy: 0.6111
Epoch 135/200
45/45 [==============================] - 52s 1s/step - loss: 0.0014 - accuracy: 1.0000 - val_loss: 2.6672 - val_accuracy: 0.6083
Epoch 136/200
45/45 [==============================] - 53s 1s/step - loss: 0.0023 - accuracy: 0.9995 - val_loss: 2.7738 - val_accuracy: 0.6167
Epoch 137/200
45/45 [==============================] - 53s 1s/step - loss: 0.0153 - accuracy: 0.9954 - val_loss: 2.2466 - val_accuracy: 0.5667
Epoch 138/200
45/45 [==============================] - 52s 1s/step - loss: 0.0011 - accuracy: 1.0000 - val_loss: 2.3442 - val_accuracy: 0.6056
Epoch 139/200
45/45 [==============================] - 52s 1s/step - loss: 0.0037 - accuracy: 0.9988 - val_loss: 2.2125 - val_accuracy: 0.6167
Epoch 140/200
45/45 [==============================] - 52s 1s/step - loss: 0.0041 - accuracy: 0.9984 - val_loss: 2.5611 - val_accuracy: 0.5944
Epoch 141/200
45/45 [==============================] - 52s 1s/step - loss: 0.0097 - accuracy: 0.9942 - val_loss: 2.6637 - val_accuracy: 0.6028
Epoch 142/200
45/45 [==============================] - 51s 1s/step - loss: 0.0014 - accuracy: 0.9998 - val_loss: 2.7853 - val_accuracy: 0.5944
Epoch 143/200
45/45 [==============================] - 52s 1s/step - loss: 5.3785e-04 - accuracy: 1.0000 - val_loss: 2.9527 - val_accuracy: 0.6000
Epoch 144/200
45/45 [==============================] - 51s 1s/step - loss: 0.0050 - accuracy: 0.9971 - val_loss: 2.7666 - val_accuracy: 0.5917
Epoch 145/200
45/45 [==============================] - 51s 1s/step - loss: 0.0050 - accuracy: 0.9978 - val_loss: 2.8708 - val_accuracy: 0.5889
Epoch 146/200
45/45 [==============================] - 51s 1s/step - loss: 0.0062 - accuracy: 0.9978 - val_loss: 2.9595 - val_accuracy: 0.6028
Epoch 147/200
45/45 [==============================] - 51s 1s/step - loss: 0.0207 - accuracy: 0.9968 - val_loss: 3.2230 - val_accuracy: 0.6028
Epoch 148/200
45/45 [==============================] - 51s 1s/step - loss: 0.0018 - accuracy: 0.9989 - val_loss: 2.9975 - val_accuracy: 0.6139
Epoch 149/200
45/45 [==============================] - 52s 1s/step - loss: 0.0081 - accuracy: 0.9977 - val_loss: 2.8573 - val_accuracy: 0.6222
Epoch 150/200
45/45 [==============================] - 51s 1s/step - loss: 0.0076 - accuracy: 0.9957 - val_loss: 2.8929 - val_accuracy: 0.6000
Epoch 151/200
45/45 [==============================] - 51s 1s/step - loss: 0.0038 - accuracy: 0.9981 - val_loss: 2.9935 - val_accuracy: 0.6111
Epoch 152/200
45/45 [==============================] - 51s 1s/step - loss: 0.0123 - accuracy: 0.9987 - val_loss: 3.1378 - val_accuracy: 0.5889
Epoch 153/200
45/45 [==============================] - 51s 1s/step - loss: 0.0024 - accuracy: 0.9996 - val_loss: 3.2177 - val_accuracy: 0.6000
Epoch 154/200
45/45 [==============================] - 51s 1s/step - loss: 5.5828e-04 - accuracy: 1.0000 - val_loss: 3.2987 - val_accuracy: 0.6056
Epoch 155/200
45/45 [==============================] - 51s 1s/step - loss: 0.0011 - accuracy: 0.9997 - val_loss: 3.2955 - val_accuracy: 0.5889
Epoch 156/200
45/45 [==============================] - 51s 1s/step - loss: 0.0062 - accuracy: 0.9978 - val_loss: 3.3738 - val_accuracy: 0.6083
Epoch 157/200
45/45 [==============================] - 52s 1s/step - loss: 0.0047 - accuracy: 0.9981 - val_loss: 2.8901 - val_accuracy: 0.5861
Epoch 158/200
45/45 [==============================] - 51s 1s/step - loss: 0.0080 - accuracy: 0.9981 - val_loss: 2.7270 - val_accuracy: 0.5861
Epoch 159/200
45/45 [==============================] - 51s 1s/step - loss: 0.0029 - accuracy: 0.9985 - val_loss: 2.5075 - val_accuracy: 0.5972
Epoch 160/200
45/45 [==============================] - 51s 1s/step - loss: 0.0084 - accuracy: 0.9958 - val_loss: 2.7545 - val_accuracy: 0.6000
Epoch 161/200
45/45 [==============================] - 52s 1s/step - loss: 9.6966e-04 - accuracy: 1.0000 - val_loss: 2.8546 - val_accuracy: 0.5944
Epoch 162/200
45/45 [==============================] - 51s 1s/step - loss: 6.2252e-04 - accuracy: 1.0000 - val_loss: 2.8575 - val_accuracy: 0.5917
Epoch 163/200
45/45 [==============================] - 51s 1s/step - loss: 0.0114 - accuracy: 0.9970 - val_loss: 2.9939 - val_accuracy: 0.5917
Epoch 164/200
45/45 [==============================] - 51s 1s/step - loss: 0.0015 - accuracy: 0.9996 - val_loss: 3.1273 - val_accuracy: 0.5972
Epoch 165/200
45/45 [==============================] - 52s 1s/step - loss: 7.0518e-04 - accuracy: 1.0000 - val_loss: 3.1435 - val_accuracy: 0.6083
Epoch 166/200
45/45 [==============================] - 53s 1s/step - loss: 3.8748e-04 - accuracy: 0.9998 - val_loss: 3.1753 - val_accuracy: 0.5861
Epoch 167/200
45/45 [==============================] - 51s 1s/step - loss: 9.3509e-04 - accuracy: 0.9996 - val_loss: 3.4882 - val_accuracy: 0.5917
Epoch 168/200
45/45 [==============================] - 51s 1s/step - loss: 0.0141 - accuracy: 0.9965 - val_loss: 2.9790 - val_accuracy: 0.6139
Epoch 169/200
45/45 [==============================] - 51s 1s/step - loss: 0.0095 - accuracy: 0.9965 - val_loss: 3.0608 - val_accuracy: 0.6083
Epoch 170/200
45/45 [==============================] - 52s 1s/step - loss: 0.0351 - accuracy: 0.9940 - val_loss: 2.5986 - val_accuracy: 0.6111
Epoch 171/200
45/45 [==============================] - 52s 1s/step - loss: 0.0102 - accuracy: 0.9971 - val_loss: 2.6755 - val_accuracy: 0.6139
Epoch 172/200
45/45 [==============================] - 51s 1s/step - loss: 0.0059 - accuracy: 0.9990 - val_loss: 2.7321 - val_accuracy: 0.6139
Epoch 173/200
45/45 [==============================] - 52s 1s/step - loss: 0.0033 - accuracy: 0.9989 - val_loss: 2.6429 - val_accuracy: 0.6139
Epoch 174/200
45/45 [==============================] - 51s 1s/step - loss: 0.0226 - accuracy: 0.9952 - val_loss: 2.7556 - val_accuracy: 0.6167
Epoch 175/200
45/45 [==============================] - 52s 1s/step - loss: 0.0016 - accuracy: 0.9993 - val_loss: 2.9017 - val_accuracy: 0.6083
Epoch 176/200
45/45 [==============================] - 53s 1s/step - loss: 0.0018 - accuracy: 0.9993 - val_loss: 2.9293 - val_accuracy: 0.6194
Epoch 177/200
45/45 [==============================] - 51s 1s/step - loss: 4.9618e-04 - accuracy: 1.0000 - val_loss: 2.8402 - val_accuracy: 0.6111
Epoch 178/200
45/45 [==============================] - 51s 1s/step - loss: 5.5101e-04 - accuracy: 0.9996 - val_loss: 2.8449 - val_accuracy: 0.6083
Epoch 179/200
45/45 [==============================] - 51s 1s/step - loss: 0.0147 - accuracy: 0.9961 - val_loss: 2.6863 - val_accuracy: 0.6083
Epoch 180/200
45/45 [==============================] - 53s 1s/step - loss: 0.0034 - accuracy: 0.9982 - val_loss: 2.9314 - val_accuracy: 0.5778
Epoch 181/200
45/45 [==============================] - 51s 1s/step - loss: 0.0011 - accuracy: 0.9999 - val_loss: 2.5726 - val_accuracy: 0.6056
Epoch 182/200
45/45 [==============================] - 52s 1s/step - loss: 0.0039 - accuracy: 0.9988 - val_loss: 2.9219 - val_accuracy: 0.5833
Epoch 183/200
45/45 [==============================] - 51s 1s/step - loss: 0.0033 - accuracy: 0.9987 - val_loss: 2.9035 - val_accuracy: 0.5694
Epoch 184/200
45/45 [==============================] - 51s 1s/step - loss: 0.0154 - accuracy: 0.9954 - val_loss: 2.5733 - val_accuracy: 0.5972
Epoch 185/200
45/45 [==============================] - 51s 1s/step - loss: 0.0188 - accuracy: 0.9965 - val_loss: 2.9742 - val_accuracy: 0.5917
Epoch 186/200
45/45 [==============================] - 51s 1s/step - loss: 0.0010 - accuracy: 1.0000 - val_loss: 2.9588 - val_accuracy: 0.5944
Epoch 187/200
45/45 [==============================] - 51s 1s/step - loss: 2.4435e-04 - accuracy: 1.0000 - val_loss: 3.0047 - val_accuracy: 0.6028
Epoch 188/200
45/45 [==============================] - 51s 1s/step - loss: 0.0019 - accuracy: 0.9995 - val_loss: 3.0628 - val_accuracy: 0.6000
Epoch 189/200
45/45 [==============================] - 51s 1s/step - loss: 1.4474e-04 - accuracy: 1.0000 - val_loss: 3.0803 - val_accuracy: 0.5833
Epoch 190/200
45/45 [==============================] - 51s 1s/step - loss: 9.4783e-04 - accuracy: 0.9996 - val_loss: 2.8781 - val_accuracy: 0.5944
Epoch 191/200
45/45 [==============================] - 51s 1s/step - loss: 3.9826e-04 - accuracy: 1.0000 - val_loss: 2.9033 - val_accuracy: 0.6028
Epoch 192/200
45/45 [==============================] - 51s 1s/step - loss: 9.4659e-04 - accuracy: 1.0000 - val_loss: 2.8769 - val_accuracy: 0.5944
Epoch 193/200
45/45 [==============================] - 51s 1s/step - loss: 3.7464e-04 - accuracy: 1.0000 - val_loss: 3.0327 - val_accuracy: 0.5861
Epoch 194/200
45/45 [==============================] - 51s 1s/step - loss: 0.0012 - accuracy: 0.9998 - val_loss: 3.0339 - val_accuracy: 0.5972
Epoch 195/200
45/45 [==============================] - 51s 1s/step - loss: 0.0125 - accuracy: 0.9961 - val_loss: 3.1660 - val_accuracy: 0.5750
Epoch 196/200
45/45 [==============================] - 51s 1s/step - loss: 0.0013 - accuracy: 1.0000 - val_loss: 3.1816 - val_accuracy: 0.5778
Epoch 197/200
45/45 [==============================] - 51s 1s/step - loss: 0.0022 - accuracy: 0.9999 - val_loss: 2.9378 - val_accuracy: 0.5667
Epoch 198/200
45/45 [==============================] - 51s 1s/step - loss: 0.0079 - accuracy: 0.9979 - val_loss: 3.1563 - val_accuracy: 0.5861
Epoch 199/200
45/45 [==============================] - 51s 1s/step - loss: 0.0040 - accuracy: 0.9985 - val_loss: 3.0251 - val_accuracy: 0.6111
Epoch 200/200
45/45 [==============================] - 51s 1s/step - loss: 0.0022 - accuracy: 0.9983 - val_loss: 2.8613 - val_accuracy: 0.5944
In [15]:
model.save('model.h5')
In [16]:
from matplotlib import pyplot as plt
In [17]:
# plot the training loss and accuracy
N = 200
plt.style.use("ggplot")
plt.figure()
plt.plot(np.arange(0, N), history.history["loss"], label="train_loss")
plt.plot(np.arange(0, N), history.history["val_loss"], label="val_loss")
plt.plot(np.arange(0, N), history.history["accuracy"], label="train_acc")
plt.plot(np.arange(0, N), history.history["val_accuracy"], label="val_acc")
plt.title("Training Loss and Accuracy")
plt.xlabel("Epoch #")
plt.ylabel("Loss/Accuracy")
plt.legend(loc="center right")
plt.savefig("CNN_Model")